iT邦幫忙

2025 iThome 鐵人賽

DAY 2
0
Modern Web

現在就學Node.js系列 第 2

認識 Node.js,開啟全端新世界 - Day2

  • 分享至 

  • xImage
  •  

Node.js 是什麼?

Node.js 就是讓 JavaScript 跑在瀏覽器之外的執行環境。

在傳統前端開發裡,JavaScript 的角色大多侷限於處理瀏覽器上的互動,例如:

  • 操作 DOM,改變畫面內容
  • 監聽使用者事件(按鈕點擊、輸入框變動)
  • 呼叫 API 取得資料並更新頁面

不過,自從有了 Node.js,JavaScript 的應用範圍被大大擴展,
不再只是「瀏覽器語言」,而是能勝任各種後端工作,包括:

  • 建立伺服器,處理請求與回應
  • 存取與操作檔案系統
  • 連接與操作資料庫
  • 撰寫 API,甚至打造完整的後端服務
          🌐 瀏覽器環境 (Before)
        ┌────────────────────────────┐
        │  JavaScript 能做的事:      │
        │   - 改變畫面 (DOM)          │
        │   - 監聽按鈕點擊            │
        │   - 呼叫 API 拿資料         │
        └────────────────────────────┘
                     │
                     ▼
          🚀 Node.js (After)
        ┌────────────────────────────┐
        │  JavaScript 還能做更多:    │
        │   - 建立伺服器              │
        │   - 存取檔案系統            │
        │   - 連接資料庫              │
        │   - 撰寫 API / 後端應用     │
        └────────────────────────────┘

換句話說,JavaScript 不再只是「網頁語言」,它也能像 Python、Java、C# 一樣,成為後端的主力工具。

Node.js 的特性

基於 Chrome V8 引擎

Node.js 的底層核心是 Google Chrome 的 V8 JavaScript 引擎

這個引擎會把 JavaScript 直接編譯成機器碼來執行(而不是解釋執行),因此效能非常快。

這也是為什麼許多效能要求高的服務(像 Netflix、LinkedIn)會選擇 Node.js。

單執行緒 + 非阻塞 I/O

Node.js 採用 單執行緒 (Single Thread),但這不代表它一次只能處理一個任務。

它搭配 非阻塞 I/O (Non-blocking I/O)事件迴圈 (Event Loop)

  1. 當需要處理一個 I/O 操作(例如讀取檔案或呼叫 API),Node.js 不會傻傻等結果。
  2. 它會把這個任務交給系統去處理,然後繼續執行其他程式。
  3. 當結果準備好時,再透過事件通知(callback、Promise 或 async/await)把結果交回來。

這種設計讓 Node.js 能夠處理 成千上萬個連線,特別適合聊天室、即時推播、API 伺服器等應用。

npm 生態系

Node.js 附帶的 npm(Node Package Manager) 擁有數十萬個套件,

無論是 資料庫、測試工具、伺服器框架,幾乎「想得到就找得到」,讓開發效率大幅提升。

Node.js 的優點

1. 高效能非阻塞 I/O
Node.js 採用事件驅動、非阻塞 I/O 模型,特別適合處理大量併發連接,在 I/O 密集型應用中表現優異。

2. JavaScript 全端開發
前後端都使用 JavaScript,降低學習成本,團隊可以共享程式碼和技能,提高開發效率。

3. 豐富的生態系統
NPM (Node Package Manager) 擁有龐大的套件庫,開發者可以輕鬆找到各種功能模組,加速開發流程。

4. 快速開發週期
輕量級架構和豐富的工具鏈,讓開發者能快速建立原型和部署應用程式。

5. 活躍的社群支持
擁有龐大的開發者社群,提供豐富的學習資源、教學文件和技術支援。

Node.js 的缺點

1. 單執行緒限制
雖然適合 I/O 密集型任務,但在 CPU 密集型計算上可能成為瓶頸,容易阻塞整個應用程式。

2. 快速變化的生態系統
技術和套件更新頻繁,可能造成相容性問題,增加維護成本。

3. 記憶體消耗
相較於一些編譯型語言,Node.js 應用程式可能消耗較多記憶體。

4. 非同步程式設計複雜性
回呼函數和非同步程式設計模式可能導致「回呼地獄」,增加程式碼複雜度和除錯難度。

5. 不適合計算應用
對於需要大量數值計算或資料處理的應用,Node.js 的效能可能不如專門設計的語言和平台。

Node.js 的常見應用場景

  • Web 伺服器:建立輕量級、高效能網站後端。
  • 即時應用:聊天室、即時通知系統。
  • API 伺服器:打造 RESTful API 或 GraphQL API。

結論:

Node.js 的出現,讓前端工程師不只把 JavaScript 侷限於瀏覽器,而是能跨足後端開發。

而Node.js它的核心優勢來自於 V8 引擎帶來的高效能單執行緒 + 非阻塞 I/O 支撐的高併發能力,以及 龐大的 npm 生態系。這些特點讓 Node.js 特別適合 API 伺服器、即時聊天室系統等開發。

接下來的系列文章裡,會逐步探索 Node.js 的核心功能與常用模組,帶你從基礎打底,一步步掌握Node.js。

參考資料:

Node.js 基础概念 | 菜鸟教程


上一篇
Day1 Node.js 學習之旅
下一篇
認識npm、建立專案與必備開發套件 - Day3
系列文
現在就學Node.js5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言